home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Temperature / TemperatureDoc.c < prev    next >
Encoding:
Text File  |  1998-10-29  |  2.1 KB  |  130 lines  |  [TEXT/CWIE]

  1. // TemperatureDoc.c -- document-level functions
  2.  
  3. #include <Types.h>
  4. #include <Events.h>
  5. #include <Menus.h>
  6. #include <stdlib.h>
  7.  
  8. #include "Globals.h"
  9. #include "ResourceDefs.h"
  10. #include "Dispatcher.h"
  11. #include "Miscellany.h"
  12. #include "TemperatureEngine.h"
  13.  
  14. #include "AboutDialog.h"
  15. #include "DDocData.h"
  16. #include "MainWindow.h"
  17. #include "TemperatureDoc.h"
  18.  
  19. static    TemperatureEngine*    GetEngine    (AMDoc*        self);
  20.  
  21. static    void    DoInvokeAbout    (AMDoc*        self);
  22.  
  23. //----------
  24. TemperatureDoc*        NewTemperatureDoc ()
  25. {
  26.     TemperatureDoc*        doc;
  27.  
  28.     doc = (TemperatureDoc*)malloc (sizeof (TemperatureDoc));
  29.     TemperatureDoc_Init (doc);
  30.     SetClassID (doc, classTemperatureDoc);
  31.  
  32.     return doc;
  33. }
  34.  
  35. //----------
  36. void    DeleteDoc (
  37.     AMDoc*        doc)
  38. {
  39.     TemperatureDoc_Free ((TemperatureDoc*)doc);
  40.     free (doc);
  41. }
  42.  
  43. //----------
  44. void    TemperatureDoc_Init (
  45.     TemperatureDoc*        self)
  46. {
  47.     ((AMDoc*)self)->mEngine = (AMEngine*) NewTemperatureEngine ();
  48.  
  49.     self->mMainWindowPtr = nil;
  50. }
  51.  
  52. //----------
  53. void    TemperatureDoc_Free (
  54.     TemperatureDoc*        self)
  55. {
  56. }
  57.  
  58. //----------
  59. TemperatureEngine*        GetEngine (
  60.     AMDoc*        self)
  61. {
  62.     return (TemperatureEngine*) (self->mEngine);
  63. }
  64.  
  65. //----------
  66. void    OpenWindows (
  67.     AMDoc*        self)
  68. {
  69.     TemperatureEngine*        engine = GetEngine (self);
  70.  
  71.     // replace this code to get data from someplace useful
  72.  
  73.     MainWindow_Create (self, GetDocData (engine));
  74. }
  75.  
  76. //----------
  77. Boolean        WouldCloseDoc (
  78.     AMDoc*        doc,
  79.     WindowPtr    inWindPtr)
  80. {
  81.     TemperatureDoc*        self = (TemperatureDoc*) doc;
  82.     short        numOpen = 0;
  83.  
  84.     if (self->mMainWindowPtr != nil)        numOpen++;
  85.  
  86.     return (numOpen <= 1);
  87. }
  88.  
  89. //----------
  90. void    DoInvokeAbout (
  91. AMDoc*        self)
  92. {
  93.     if (GetAboutDialog ()) {
  94.         /* do something */
  95.     }
  96. }
  97.  
  98. //----------
  99. Boolean        DoDocCommand (
  100.     AMDoc*        self,
  101.     long        inCommand)
  102. {
  103.     Boolean        result = true;
  104.  
  105.     switch (inCommand) {
  106.         case cmdSave:
  107.                 DoSave (self);
  108.             break;
  109.         case cmdSaveAs:
  110.                 DoSaveAs (self);
  111.             break;
  112.         case cmdRevert:
  113.                 DoRevert (self);
  114.             break;
  115.         case cmdPageSetup:
  116.                 DoPageSetup (self);
  117.             break;
  118.         case cmdPrint:
  119.                 DoPrint (self);
  120.             break;
  121.         case cmdInvokeAbout:
  122.                 DoInvokeAbout (self);
  123.             break;
  124.  
  125.         default:
  126.                 result = false;
  127.     } // switch
  128.     return result;
  129. }
  130.